package cn.tedu.cgb2202.sk.common.util;

import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;

import java.util.UUID;

/**
 * 2022.6.14
 * 胡然
 * 该类负责对密码进行加密
 */
@Component
public class PasswordEncoder {
    /**
     * 2022.6.14
     * 胡然
     * 对密码进行加密的方法
     * @param password 传入的密码
     * @return 加密后的密码
     */
    public String encode(String password){
        String salt = UUID.randomUUID().toString();
        String encodePassword = password;
        for (int i=0;i<10;i++) {
          encodePassword = DigestUtils.md5DigestAsHex((salt + encodePassword + salt).getBytes());
        }
        return salt + "/" + encodePassword;
    }

    /**
     * 2022.6.14
     * 胡然
     * 对密码进行校验
     * @param password 原密码(用户传入的密码)
     * @param encodedPassword 加密后的密码(数据库查询的密码)
     * @return 是否匹配
     */
    public Boolean matches(String password,String encodedPassword){
        String salt = encodedPassword.split("/")[0];
        String newPassword = password;
        for (int i=0;i<10;i++) {
            newPassword = DigestUtils.md5DigestAsHex((salt + newPassword + salt).getBytes());
        }
        newPassword = salt + "/" + newPassword;
        return newPassword.equals(encodedPassword);
    }
}
